package com.fy.fyspace.service.hotness.strategy;

import com.fy.fyspace.model.dto.hotness.HotnessCalculationDTO;

import java.math.BigDecimal;

/**
 * 热度计算策略接口
 * 设计模式：策略模式，定义热度计算的算法族
 * 作用：允许在运行时选择不同的热度计算算法，提高代码的可扩展性和可维护性
 * 
 * @author fwq
 * @since 2024-12-19
 */
public interface HotnessCalculationStrategy {
    
    /**
     * 计算热度分数
     * 
     * @param calculationDTO 计算参数
     * @return 热度分数
     */
    BigDecimal calculateHotness(HotnessCalculationDTO calculationDTO);
    
    /**
     * 获取策略名称
     * 
     * @return 策略名称
     */
    String getStrategyName();
    
    /**
     * 获取策略描述
     * 
     * @return 策略描述
     */
    String getStrategyDescription();
    
    /**
     * 获取策略类型
     * 
     * @return 策略类型
     */
    String getStrategyType();
    
    /**
     * 是否启用该策略
     * 
     * @return 是否启用
     */
    boolean isEnabled();
} 